package com.atguigu.gmall.service;

import com.atguigu.gmall.model.cart.entity.CartInfo;
import com.atguigu.gmall.model.cart.vo.AddSuccessVo;

import java.util.List;

/**
 * @Author:lyd
 **/
public interface CartService {
    AddSuccessVo addCart(String cartKey, Long skuId, Long skuNum);

    /**
     * 决定购物车的key
     * @return
     */
    String determineCartKey();

    /**
     * 获取购物车列表
     * @return
     */
    List<CartInfo> cartList(String cartKey);

    /**
     * 修改购物车选中状态
     *
     * @param cartKey
     * @param skuId
     * @param isChecked
     */
    void checkCart(String cartKey, Long skuId, Integer isChecked);

    /**
     * 根据skuId删除购物车某一件商品
     * @param cartKey
     * @param skuId
     */
    void deleteCartBySkuId(String cartKey, Long skuId);

    /**
     * 向购物车中添加商品或减少商品
     * @param cartKey
     * @param skuId
     * @param num
     */
    void incrOrDecr(String cartKey, Long skuId, Long num);

    /**
     * 删除购物车选中的商品
     * @param cartKey
     */
    void deleteChecked(String cartKey);

    /**
     * 获取用户购物车列表
     * @param cartKey
     * @return
     */
    List<CartInfo> userList(String cartKey);

    /**
     * 获取用户选中的购物车列表
     * @param cartKey
     * @return
     */
    List<CartInfo> checkedList(String cartKey);
}
